
exception Empty;
exception No_such_key;

type t 'k 'v;
value empty: unit -> t 'k 'v;
value is_empty: t 'k 'v -> bool;
value push: t 'k 'v -> 'k -> 'v -> unit;
value pop: t 'k 'v -> 'v;
value mem: t 'k 'v -> 'k -> bool;
value remove: t 'k 'v -> 'k -> unit;
value remove_all: t 'k 'v -> 'k -> unit;
value clear: t 'k 'v -> unit;
value iter: ~f:('v -> unit) -> t 'k 'v -> unit;
value to_list: t 'k 'v -> list 'v;
